<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>SPHinXsys: SPHINXsys/src/shared/meshes/base_mesh.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">SPHinXsys
   &#160;<span id="projectnumber">alpha version</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_3dc1dabd28ba78e072d14d3fcfc90454.html">SPHINXsys</a></li><li class="navelem"><a class="el" href="dir_48ea983704c43b6d88c1fa3f4d09e369.html">src</a></li><li class="navelem"><a class="el" href="dir_0a0d9ef1793521534f0094f317758287.html">shared</a></li><li class="navelem"><a class="el" href="dir_61d72b4dd46479d55af927dc89c7a78c.html">meshes</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">base_mesh.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>This is the base classes of mesh, which describe ordered and indexed data sets. Depending on application, there are different data saved on the mesh. The intersection points of mesh lines are called grid points, the element enclosed by mesh lines (2D) or faces (3D) called cells. The mesh line or face are also called cell faces. Grid points are also called cell corners.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;base_data_package.h&quot;</code><br />
<code>#include &quot;<a class="el" href="sph__data__conainers_8h_source.html">sph_data_conainers.h</a>&quot;</code><br />
<code>#include &quot;my_memory_pool.h&quot;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;functional&gt;</code><br />
</div>
<p><a href="base__mesh_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_base_mesh.html">SPH::BaseMesh</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract base class for all meshes.  <a href="class_s_p_h_1_1_base_mesh.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_mesh.html">SPH::Mesh</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract base class for defining basic mesh properties. The mesh is proposed for several functions. First, it is used in cell linked list for neighbor search. Second, it is used for background maps such as level sets. This class is the counterpart of the class particles.  <a href="class_s_p_h_1_1_mesh.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_level_set_data.html">SPH::LevelSetData</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Level set is for describing complex geometrics, It is the distance to the surface of the geometry and the direction leads to the nearest point on the surface.  <a href="class_s_p_h_1_1_level_set_data.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_base_data_package.html">SPH::BaseDataPackage&lt; PackageDataType &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract base class for a data package which is given by a small mesh patch.  <a href="class_s_p_h_1_1_base_data_package.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_level_set_data_package.html">SPH::LevelSetDataPackage</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fixed memory level set data packed in a package.  <a href="class_s_p_h_1_1_level_set_data_package.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_base_mesh_with_data_packages.html">SPH::BaseMeshWithDataPackages</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract class for a mesh with data packages.  <a href="class_s_p_h_1_1_base_mesh_with_data_packages.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_base_level_set.html">SPH::BaseLevelSet</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A abstract describes a mesh with level set data packages.  <a href="class_s_p_h_1_1_base_level_set.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_mesh_with_data_packages.html">SPH::MeshWithDataPackages&lt; BaseMeshType, DataPackageType &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract class fpr mesh with data packages.  <a href="class_s_p_h_1_1_mesh_with_data_packages.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_level_set.html">SPH::LevelSet</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="class_s_p_h_1_1_mesh.html" title="Abstract base class for defining basic mesh properties. The mesh is proposed for several functions...">Mesh</a> with level set data as packages.  <a href="class_s_p_h_1_1_level_set.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_multilevel_mesh.html">SPH::MultilevelMesh&lt; BaseMeshType, MeshLevelType &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multi level Meshes with multi resolution mesh data.  <a href="class_s_p_h_1_1_multilevel_mesh.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_p_h_1_1_multiresolution_level_set.html">SPH::MultiresolutionLevelSet</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multi level Meshes for level set data packages.  <a href="class_s_p_h_1_1_multiresolution_level_set.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespace_s_p_h"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_s_p_h.html">SPH</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ac11be758d779fa508c860fc76ea76c1d"><td class="memItemLeft" align="right" valign="top">typedef std::function&lt; void(Vecu, <a class="el" href="class_real.html">Real</a>)&gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_s_p_h.html#ac11be758d779fa508c860fc76ea76c1d">SPH::MeshFunctor</a></td></tr>
<tr class="separator:ac11be758d779fa508c860fc76ea76c1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4ae5c55d688fbb13bd48ef45fb27f05"><td class="memTemplParams" colspan="2">template&lt;class ReturnType , class DataPackageType &gt; </td></tr>
<tr class="memitem:ae4ae5c55d688fbb13bd48ef45fb27f05"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespace_s_p_h.html#ae4ae5c55d688fbb13bd48ef45fb27f05">SPH::PackageFunctor</a> = std::function&lt; ReturnType(DataPackageType *, <a class="el" href="class_real.html">Real</a>)&gt;</td></tr>
<tr class="separator:ae4ae5c55d688fbb13bd48ef45fb27f05"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:aefc4743c0431714953fbf6b4850d4cae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_s_p_h.html#aefc4743c0431714953fbf6b4850d4cae">SPH::MeshIterator</a> (Vecu index_begin, Vecu index_end, MeshFunctor &amp;mesh_functor, <a class="el" href="class_real.html">Real</a> dt)</td></tr>
<tr class="separator:aefc4743c0431714953fbf6b4850d4cae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae6b33f2feaab1a5a06a45ec57f0ee8a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_s_p_h.html#aae6b33f2feaab1a5a06a45ec57f0ee8a">SPH::MeshIterator_parallel</a> (Vecu index_begin, Vecu index_end, MeshFunctor &amp;mesh_functor, <a class="el" href="class_real.html">Real</a> dt)</td></tr>
<tr class="separator:aae6b33f2feaab1a5a06a45ec57f0ee8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4ff282c8b1c3e623e04440adf39f68a"><td class="memTemplParams" colspan="2">template&lt;class DataPackageType &gt; </td></tr>
<tr class="memitem:aa4ff282c8b1c3e623e04440adf39f68a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespace_s_p_h.html#aa4ff282c8b1c3e623e04440adf39f68a">SPH::PackageIterator</a> (ConcurrentVector&lt; DataPackageType *&gt; inner_data_pkgs, PackageFunctor&lt; void, DataPackageType &gt; &amp;pkg_functor, <a class="el" href="class_real.html">Real</a> dt=0.0)</td></tr>
<tr class="separator:aa4ff282c8b1c3e623e04440adf39f68a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47bfdfc81e94165cf7377baf3314020b"><td class="memTemplParams" colspan="2">template&lt;class DataPackageType &gt; </td></tr>
<tr class="memitem:a47bfdfc81e94165cf7377baf3314020b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespace_s_p_h.html#a47bfdfc81e94165cf7377baf3314020b">SPH::PackageIterator_parallel</a> (ConcurrentVector&lt; DataPackageType *&gt; inner_data_pkgs, PackageFunctor&lt; void, DataPackageType &gt; &amp;pkg_functor, <a class="el" href="class_real.html">Real</a> dt=0.0)</td></tr>
<tr class="separator:a47bfdfc81e94165cf7377baf3314020b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6044dbd32a657819874af06950bf725"><td class="memTemplParams" colspan="2">template&lt;class ReturnType , typename ReduceOperation , class DataPackageType &gt; </td></tr>
<tr class="memitem:af6044dbd32a657819874af06950bf725"><td class="memTemplItemLeft" align="right" valign="top">ReturnType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespace_s_p_h.html#af6044dbd32a657819874af06950bf725">SPH::ReducePackageIterator</a> (ConcurrentVector&lt; DataPackageType *&gt; inner_data_pkgs, ReturnType temp, PackageFunctor&lt; ReturnType, DataPackageType &gt; &amp;reduce_pkg_functor, ReduceOperation &amp;reduce_operation, <a class="el" href="class_real.html">Real</a> dt=0.0)</td></tr>
<tr class="separator:af6044dbd32a657819874af06950bf725"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10c87e35a347ecf49ccf630565aab1e2"><td class="memTemplParams" colspan="2">template&lt;class ReturnType , typename ReduceOperation , class DataPackageType &gt; </td></tr>
<tr class="memitem:a10c87e35a347ecf49ccf630565aab1e2"><td class="memTemplItemLeft" align="right" valign="top">ReturnType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespace_s_p_h.html#a10c87e35a347ecf49ccf630565aab1e2">SPH::ReducePackageIterator_parallel</a> (ConcurrentVector&lt; DataPackageType *&gt; inner_data_pkgs, ReturnType temp, PackageFunctor&lt; ReturnType, DataPackageType &gt; &amp;reduce_pkg_functor, ReduceOperation &amp;reduce_operation, <a class="el" href="class_real.html">Real</a> dt=0.0)</td></tr>
<tr class="separator:a10c87e35a347ecf49ccf630565aab1e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This is the base classes of mesh, which describe ordered and indexed data sets. Depending on application, there are different data saved on the mesh. The intersection points of mesh lines are called grid points, the element enclosed by mesh lines (2D) or faces (3D) called cells. The mesh line or face are also called cell faces. Grid points are also called cell corners. </p>
<dl class="section author"><dt>Author</dt><dd>Chi ZHang and Xiangyu Hu </dd></dl>
<dl class="section version"><dt>Version</dt><dd>0.1 </dd>
<dd>
0.2.0 Now narrow bounded levelset mesh is added to replace the whole domain background levelset mesh. </dd></dl>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>
